package com.atguigu.gulimall.product;

/**
 * 数组实现循环队列
 */
public class ArrayQeuee {
    int rear = 0;//数组最后一个元素+1的位置
    int font = 0;//数组第一个元素的位置
    int array; //数组的长度
    int arr[];//该数据用于存放数组
    public ArrayQeuee(int n){
        array = n;
        arr = new int[array];
    }
    //判断队列是否已满
    public boolean isFull(){
        return  (rear + 1) % array == font;
    }
    //添加数组元素
    public void add(int n){
        //判断数组元素是否已满
        boolean full = isFull();
        if (full){
            System.out.println("数组元素已满添加失败");
            return;
        }
        //添加元素
        arr[rear] = n;
        rear = (rear+1)%array;
    }
    //判断数组是否为空
    public boolean isEmtey(){
        return rear==font;
    }
    //从数组中获取元素
    public int get(){
        int i = arr[font];
        font=(font+1)%array;
        return i;
    }
    //显示出数组元素
    public void  show(){
        if (isEmtey()){
            System.out.println("数组为空");
            return;
        }
        for (int i = font;i<font+size();i++){
            System.out.println(arr[i % array]);
        }
    }
    //数组中元素的个数
    public int size(){
        return (rear+array-font)%array;
    }
}
